//
//  CWUserAccount.swift
//  新浪微博练习02
//
//  Created by 曹魏 on 16/10/4.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
//归档和解档,需要遵守NScoding协议
class CWUserAccount: NSObject,NSCoding {
    /*
     用户授权的唯一票据，用于调用微博的开放接口，同时也是第三方应用验证微博用户登录的唯一票据，第三方应用应该用该票据和自己应用内的用户建立唯一影射关系，来识别登录状态，不能使用本返回值里的UID字段来做登录识别。
     */
    var access_token : String?
    //存这个过期时间 是没有意义的
    
    var expires_in :Int = 0 {
        didSet {
            //给expires_date赋值
            expires_date = Date(timeIntervalSinceNow: Double(expires_in))
        }
    }
    
    //增加一个过期日期的属性
    var expires_date :Date?
    
    
    var uid : String?
    //用户名
    var name : String?
    //用户头像:用户头像地址（大图），180×180像素
    var avatar_large : String?
    //kvc
    init(dict: [String : Any]) {
        super.init()
        setValuesForKeys(dict)
    }
    //空实现方法,避免崩溃
    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        
    }
    //nscoding 的两个协议方法
    //实现归档
//    func encode(with aCoder : NSCoder) {
//        aCoder.encode(access_token ,forKey : "access_token")
//        aCoder.encode(uid,forKey : "uid")
//        aCoder.encode(name,forKey : "name")
//        aCoder.encode(avatar_large,forKey : "avatar_large")
//        
//    }
    func encode(with aCoder: NSCoder) {
        aCoder.encode(access_token, forKey: "access_token")
        aCoder.encode(uid, forKey: "uid")
        aCoder.encode(name, forKey: "name")
        aCoder.encode(avatar_large, forKey: "avatar_large")
        aCoder.encode(expires_date, forKey: "expires_date")
    }
    
    required init?(coder aDecoder: NSCoder) {
        access_token = aDecoder.decodeObject(forKey: "access_token") as! String?
        uid = aDecoder.decodeObject(forKey: "uid") as! String?
        name = aDecoder.decodeObject(forKey: "name") as! String?
        avatar_large = aDecoder.decodeObject(forKey: "avatar_large") as! String?
        expires_date = aDecoder.decodeObject(forKey: "expires_date") as! Date?
    }
    
    //解档
//    required init(coder aDecoder:NSCoder) {
//        //给模型的属性赋值
//        access_token = aDecoder.decodeObject(forKey : "access_token") as? String
//        uid = aDecoder.decodeObject(forKey : "uid") as? String
//        name = aDecoder.decodeObject(forKey : "name") as? String
//        avatar_large = aDecoder.decodeObject(forKey : "avatar_large") as? String
//    }
    
    
    
    
    
    
    
    
    
    
    
    
}
